package 题组;

import java.util.Arrays;

/**
 * @author 挚爱之夕
 * @date 2021/9/8 - 09 - 08 - 12:19
 * @Description: 题组
 * @Version: 1.0
 */
public class _006_合并有序数组 {
    //合并在nums1里
    public static void main(String[] args) {
        int[] nums1 = new int[]{1, 2, 3, 0, 0, 0};
        int[] nums2 = new int[]{2, 5, 6};
        int m = 3, n = 3;
        merge1(nums1, m, nums2, n);
        System.out.println(Arrays.toString(nums1));
    }

    //逆双指针
    public static void merge(int[] nums1, int m, int[] nums2, int n) {
        int current = m + n - 1;
        int l = m - 1, r = n - 1;
        while (l > -1 && r > -1) {
            if (nums1[l] >= nums2[r]) {
                nums1[current--] = nums1[l];
                l--;
            } else {
                nums1[current--] = nums2[r];
                r--;
            }
        }
        while (r > -1) {
            nums1[current--] = nums2[r--];
        }
    }

    //直接合并后排序
    private static void merge1(int[] nums1, int m, int[] nums2, int n) {
        for (int i = 0; i < n; i++) {
            nums1[i+m] = nums2[i];
        }
        Arrays.sort(nums1);
    }
}
